package com.mohan.dao;

import java.util.List;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

import com.mohan.bean.ArticleListInfo;
import com.mohan.pojo.Article;
import com.mohan.pojo.Comment;
import com.mohan.pojo.Content;
import com.mohan.req.ChgArticleClassReq;
import com.mohan.req.ChgExamineReq;
import com.mohan.req.ChgIsOpenReq;
import com.mohan.req.ChgRecommendReq;
import com.mohan.req.ChgStatusReq;

public interface ArticleDao {

	/**
	 * 向数据库插入文章
	 * 
	 * @param article
	 */
	public void insertArticle(Article article);

	/**
	 * 更新文章的文段id数组
	 * 
	 * @param article
	 */
	public void updteContentIds(Article article);

	/**
	 * 获取所有文章
	 */
	public List<Article> selectArticles();

	/**
	 * 获取刚刚插入的文章的id
	 * 
	 * @return
	 */
	public int selectaLastArticleId();
	
	/**
	 * 根据文章id获取文章所属用户橘色role
	 * @param articleId
	 * @return
	 */
	public int selectRoleByArticleId(int articleId);

	/**
	 * 根据用户id获取用户文章列表
	 * 
	 * @param userId
	 * @return
	 */
	public List<Article> selectArticleListForUserId(String userId);
	
	/**
	 * 根据文章id获取文章内容
	 * @param articleId
	 * @return
	 */
	public Article selectArticleByArticleId(int articleId);
	
	/**
	 * 删除文章(把文章状态改为删除)
	 * @param articleId
	 */
	public void deleteArticle(int articleId);
	
	/**
	 * 文章更新
	 * @param article
	 */
	public void updateArticleByArticleId(Article article);
	
	/**
	 * 根据用户id获取用户下面文章的总数
	 * @param userId
	 * @return
	 */
	public Integer selectRecordSizeByUserId(String userId);
	
	/**
	 * 管理员分页获取文章列表
	 * @param listInfo
	 * @return
	 */
	public List<Article> selectRecordByPageM(ArticleListInfo listInfo);
	
	/**
	 * 自己分页获取文章列表
	 * @param listInfo
	 * @return
	 */
	public List<Article> selectRecordByPageS(ArticleListInfo listInfo);
	
	/**
	 * 其他用户分页获取文章列表
	 * @param listInfo
	 * @return
	 */
	public List<Article> selectRecordByPageO(ArticleListInfo listInfo);
	
	/**
	 * 更改文章状态
	 * @param statusReq
	 */
	public void updateArticleStatus(ChgStatusReq statusReq);
	
	/**
	 * 更改文章的审核进度
	 * @param examineReq
	 */
	public void updateArticleExamine(ChgExamineReq examineReq);
	
	/**
	 * 更改文章的推荐
	 * @param recommendReq
	 */
	public void updateArticleRecommend(ChgRecommendReq recommendReq);
	
	/**
	 * 更改文章的公开情况
	 * @param isOpenReq
	 */
	public void updateArticleIsOpen(ChgIsOpenReq isOpenReq);
	
	/**
	 * 更改文章的类别
	 * @param classReq
	 */
	public void updateArticleClass(ChgArticleClassReq classReq);
}
